<?php

	function rewritefilename($url = "",$sep = "_",$ext = ".php"){
		if($url=="") $url = $_SERVER['PHP_SELF'];
		$chaine = basename($url,$ext);
		$tableau=explode($sep,$chaine);
		for($j = 0; $j<sizeof($tableau); $j++) {
			echo $tableau[$j]." ";
		}
	}

	function url_tri($th, $tri, $tri_col, $tri_sens){
		if ($tri){
			$fic = basename($_SERVER['PHP_SELF']);
			$param=$_SERVER["QUERY_STRING"];
			$tab = explode('&', $param);
			$args=Array();
			foreach ($tab as $t){
				$cou = explode('=',$t);
				if (isset($cou[1]))
					$args[$cou[0]] = $cou[1];
			}
			$args['tri_col']=$tri_col;
			$args['tri_sens']=($tri_sens)?1:0;
			$param = Array();
			foreach ($args as $key=>$arg){
				if (isset($args[$key]))
				$param[] = $key.'='.$arg;
			}
			return "<a href='".$fic.'?'.implode('&',$param)."'>$th</a>";
		}
		else {
			return $th;
		}
	}

class Table//###################################################################
{
// Renvoie l'en-tete de colonne, suivant le code $champ
public static function Th($champ)//---------------------------------------------
{
	if ($champ=='mai_liste')
		return '';
	// Si la constante LNG correspondante existe
	if ( defined('LNG_'.strtoupper($champ)) )
		// On a notre résultat
		return constant('LNG_'.strtoupper($champ));
	// Dans le cas contraire, suivant le code transmis
	switch ($champ)
	{
		// Ici les cas particuliers
		case 'cli_bra_code':
			return LNG_BRA_COURT;
		case 'cli_zon_code':
			return LNG_ZON_COURT;
		case 'cli_mac_nb':
		case 'mod_mac_nb':
			return LNG_MAC_LONG;
		// Si le code ne correspond à rien de connu
		default:
			// On retourne le code lui-même
			return $champ;
	}
}//-----------------------------------------------------------------------------


// Renvoie la cellule de la ligne $row, suivant le code $champ
public static function Td($champ, $row)
{
	// Suivant le code transmis
	switch ($champ)	{
		// Utilisateurs
		case 'uti_code':// code
			return $row['uti_code'];
		case 'uti_nom':// nom
			return Liens::Utilisateur($row['uti_id'], $row['uti_nom'], $row['uti_prenom'],$row['uti_code'],LINK_NOM);
		case 'uti_email':// email
			return dohtml_mailto($row['uti_email'], LNG_UTI_CLIC_EMAIL);
		// Modeles
		case 'mod_code':// code
			return Liens::Modele($row['mod_id'], $row['mod_code']);
		// Branches
		case 'cli_bra_code':
		case 'bra_code':// code
			return Liens::Branche($row['bra_id'], $row['bra_code'], '', LINK_CODE);
		case 'bra_nom':// nom
			return Liens::Branche($row['bra_id'], '', $row['bra_nom'], LINK_NOM);
		// Zones
		case 'cli_zon_code':
		case 'zon_code':// code
			return Liens::Zone($row['zon_id'], $row['zon_code'], '', LINK_CODE);
		case 'zon_nom':// nom
			return Liens::Zone($row['zon_id'], '', $row['zon_nom'], LINK_NOM);
		// Contacts
		case 'con_nom':// code
			if ($row['con_nom'].$row['con_prenom'])
				return Liens::Contact($row['con_id'], $row['con_nom'], $row['con_prenom'],'',LINK_NOM);
			else
				return Liens::Contact($row['con_id'], '-Voir la fiche-', '','',LINK_NOM);
		case 'con_fonction':// fonction
			return Liens::Contact($row['con_id'], $row['con_fonction'], '','',LINK_NOM);
		case 'con_annee':// année
			return $row['con_annee'];
		// Societe
		case 'cli_nom':
			if ($row['cli_nom'])
				return Liens::Client($row['cli_id'], $row['cli_nom'], '','',LINK_NOM);
			else
				return Liens::Client($row['cli_id'], '-Voir la fiche-', '','',LINK_NOM);
		case 'cli_ville':
			return $row['cli_ville'];
		case 'cli_annee':
			return $row['cli_annee'];
		// Machines
		case 'cli_mac_nb':
			return $row['cli_mac_nb'];
		case 'mod_mac_nb':
			return $row['mod_mac_nb'];
		case 'mac_serie':
			return $row['mac_serie'];
		case 'mac_commission':
			return $row['mac_commission'];
		case 'mac_annee':
			return $row['mac_annee'];
		case '':
			return Liens::Machine($row['mac_id']);
		case 'rap_date':
			return Liens::Rapport($row['rap_id'], $row['rap_date']);
		case 'rap_objet':
			if ( $row['rap_objet'] ){
				$label = $row['rap_objet'].' - ';
			}
			else
				$label = '';
			if ( !$row['rap_statut'] ){
				$label .= '(non publié)';
			}
			return Liens::Rapport($row['rap_id'], $label);
		case 'mai_liste':
			$check = ($row['env_envoi'])? " checked='checked'": "";
			return "<input type='checkbox' name='contact{$row['con_id']}' id='contact{$row['con_id']}'$check onclick='javascript:maj_envoi({$row['mai_id']}, {$row['con_id']})'>";
		// Si le code ne correspond à rien de connu
		default:
			// On retourne le code lui-même
			return $champ;
	}
}//-----------------------------------------------------------------------------


// Ecrit le tableau des utilisateurs actifs
public static function Tableau($db, $sql, $champs, $champs_tri, $msg_vide, $tri=False, $tri_col=-1, $tri_sens=-1, $debut=-1, $nb = -1)//-----------------
{
	if ($tri_col==-1){
		$tri_col = get_param('tri_col', 0);
		$tri_sens = get_param('tri_sens', True);
	}
	if ($tri && $champs_tri[$tri_col]!=''){
		$sql .= ' ORDER BY '.$champs_tri[$tri_col].' ';
		$sql .= ($tri_sens)?'ASC':'DESC';
	}
	if ($debut!=-1){
		$sql .= " LIMIT $debut,$nb";
	}
	if ($result = $db->query($sql))
	{
		// On cherche le nombre d'enregistrement retourné
		$nb = $result->num_rows;
		// Si il n'y a aucun enregistrement
		if (!$nb)
		{
			// On affiche le message
			echo $msg_vide;
			// Et on quitte
			return True;
		}
		else
			echo "$nb enregistement(s) trouvé(s)";
	}
	// Si la requete échoue
	else
	{
		// On affiche le message
		echo LNG_ERR_DB;
		// Et on quitte
		return False;
	}
?>
<table border='1'>
<thead>
	<tr>
<?php
	// Pour chaque champ
	foreach ($champs as $id=>$champ)
	{
		// On affiche l'en-tete de colonne
?>			
		<th><?=url_tri(Table::Th($champ), $tri, $id, ($id==$tri_col)?!$tri_sens:$tri_sens)?></th>
<?php
	}//foreach ($champs as $champ)
?>
	</tr>
</thead>
<tbody>
<?php
	// Pour chaque enregistrement
	for ($i = 0; $i < $nb; $i++)
	{
		// On recupere les données de l'enregistrement courant
		$row = $result->fetch_assoc();
?>
<tr>
<?php
		// Pour chaque champ
		foreach ($champs as $champ)
		{
			// On affiche la cellule
?>			
		<td><?=Table::Td($champ, $row)?></td>
<?php
		}//foreach ($champs as $champ)
?>    </tr>
<?php
	}//for ($i = 0; $i < $nb; $i++)
?>
</tbody>
</table>
<?php
	// On supprime la requete
	$result->free();
	// On quitte
	return True;  
}//-----------------------------------------------------------------------------



public static function Select($db, $sql, $id, $nom, $value=-1, $vide=False){
	if ($vide)
		echo "<option value='-1'>$nbsp;</option>";
	if ($result = $db->query($sql)){
		while($row = $result->fetch_assoc()){
			$selected = ($value==$row[$id])?" selected='selected'":'';
			echo "<option value='{$row[$id]}'$selected>{$row[$nom]}</option>";
		}
	}
}


public static function Mailing($db, $id, $nom){
	$code= substr($nom, 0, 3);
	$lettre = $nom[0];
	$sql = "SELECT {$code}_nom FROM {$nom} JOIN criteres ON criteres.cri_tab_id={$nom}.{$code}_id WHERE cri_table='{$lettre}' AND cri_mai_id=$id";
	$retour = array();
	if ($result=$db->query($sql))
		if ($result->num_rows>0){
			while ($row=$result->fetch_assoc())
				$retour[] = $row[$code.'_nom'];
			return "<h5>".$result->num_rows.' '.ucfirst($nom).':</h5> '.implode('; ', $retour);
		}		
}

public static function link_clean(){
}

public static function clean(){
}

}//#############################################################################
?>
